import click

from tzq.extensions import db
from tzq.tpc_db_info.tpc_db_info_models import DatabaseInfo, DatabasePermission


def register_tpc_db_info_commands(app):
    @app.cli.command("forge_tpc_db_info")
    def forge():
        """tpc_db_info Generate fake data."""
        db_info = [
            {'project': 'TPC', 'database_code': 'tpc_gauss_plan_sit', 'module': '计划', 'usage': 'SIT',
             'database_type': 'openGauss', 'database_name': 'tpc_plan_sit_db', 'ip_address': '7.203.228.46',
             'port': '8000',
             'schema': 'fin_tr_plan', 'username': 'fin_tr_plan', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_sit', 'module': '指令', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_ins_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'fin_tr_ins', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_common_sit', 'module': '公共', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_common_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_plan_common', 'username': 'fin_tr_plan_common',
               'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_mon_sit', 'module': '可视与监控', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_plan_mon', 'username': 'fin_tr_plan_mon', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_sit', 'module': '资金哨兵', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_eod_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'fin_tr_plan_eod', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_cover_sit', 'module': '保护罩', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_cover_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_cover', 'username': 'fin_tr_cover', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_uat', 'module': '计划', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_plan_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan', 'username': 'fin_tr_plan', 'password': 'Tpc@13685_plan'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_uat__etl_cashplan_op',
               'module': '计划-大账户-数据湖使用',
               'usage': 'UAT', 'database_type': 'openGauss', 'database_name': 'tpc_plan_uat_db',
               'ip_address': '7.203.215.211', 'port': '8000', 'schema': 'fin_tr_plan', 'username': 'etl_cashplan_op',
               'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_uat__plan_uat_reader', 'module': '计划-只读账号',
               'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_plan_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan', 'username': 'plan_uat_reader', 'password': 'Tpc@PlanReader@333'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_uat', 'module': '指令', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_ins_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'fin_tr_ins', 'password': 'Tpc@13685_ins'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_uat__ins_uat_reader', 'module': '指令-只读账号',
               'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_ins_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'ins_uat_reader', 'password': 'Tpc@InsReader@333'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_common_uat', 'module': '公共', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_common_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_common', 'username': 'fin_tr_plan_common',
               'password': 'Tpc@13685_common'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_mon_uat', 'module': '可视与监控', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_mon', 'username': 'fin_tr_plan_mon', 'password': 'Tpc@13685_mon'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_uat', 'module': '资金哨兵', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_eod_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'fin_tr_plan_eod', 'password': 'Tpc@13685_eod'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_uat__eod_reader', 'module': '资金哨兵-只读账号',
               'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_eod_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'eod_reader', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_cover_uat', 'module': '保护罩', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_cover_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_cover', 'username': 'fin_tr_cover', 'password': 'Tpc@13685_cover'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_icsl', 'module': '计划', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_plan_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan', 'username': 'fin_tr_plan', 'password': 'Tpc@13685_plan'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_icsl', 'module': '指令', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_ins_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'fin_tr_ins', 'password': 'Tpc@13685_ins'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_common_icsl', 'module': '公共', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_common_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_common', 'username': 'fin_tr_plan_common',
               'password': 'Tpc@13685_common'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_mon_icsl', 'module': '可视与监控', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_mon', 'username': 'fin_tr_plan_mon', 'password': 'Tpc@13685_mon'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_icsl', 'module': '资金哨兵', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_eod_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'fin_tr_plan_eod', 'password': 'Tpc@13685_eod'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_cover_icsl', 'module': '保护罩', 'usage': '送检',
               'database_type': 'openGauss', 'database_name': 'tpc_cover_icsl_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_cover', 'username': 'fin_tr_cover', 'password': 'Tpc@13685_cover'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_press', 'module': '计划', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_plan_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_plan', 'username': 'fin_tr_plan', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_press', 'module': '指令', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_ins_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'fin_tr_ins', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_common_press', 'module': '公共', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_common_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_plan_common', 'username': 'fin_tr_plan_common',
               'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_mon_press', 'module': '可视与监控', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_plan_mon', 'username': 'fin_tr_plan_mon', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_press', 'module': '资金哨兵', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_eod_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'fin_tr_plan_eod', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_cover_press', 'module': '保护罩', 'usage': '压测',
               'database_type': 'openGauss', 'database_name': 'tpc_cover_press_db', 'ip_address': '7.203.207.124',
               'port': '8000', 'schema': 'fin_tr_cover', 'username': 'fin_tr_cover', 'password': 'Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_plan_prac2', 'module': '计划', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_plan_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan', 'username': 'fin_tr_plan', 'password': 'Tpc@13685_plan'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_ins_prac2', 'module': '指令', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_others_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_ins', 'username': 'fin_tr_ins', 'password': 'Tpc@13685_ins'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_common_prac2', 'module': '公共', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_others_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_common', 'username': 'fin_tr_plan_common',
               'password': 'Tpc@13685_common'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_mon_prac2', 'module': '可视与监控', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_others_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_mon', 'username': 'fin_tr_plan_mon', 'password': 'Tpc@13685_mon'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_eod_prac2', 'module': '资金哨兵', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_others_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_eod', 'username': 'fin_tr_plan_eod', 'password': 'Tpc@13685_eod'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_cover_prac2', 'module': '保护罩', 'usage': '演练2',
               'database_type': 'openGauss', 'database_name': 'tpc_prac2_others_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_cover', 'username': 'fin_tr_cover', 'password': 'Tpc@13685_cover'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_his_sit', 'module': 'ET的O库迁移到高斯', 'usage': 'SIT',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_sit_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_plan_his', 'username': 'fin_tr_plan_his',
               'password': 'ETS_To_Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_his_uat', 'module': 'ET的O库迁移到高斯', 'usage': 'UAT',
               'database_type': 'openGauss', 'database_name': 'tpc_mon_uat_db', 'ip_address': '7.203.215.211',
               'port': '8000', 'schema': 'fin_tr_plan_his', 'username': 'fin_tr_plan_his',
               'password': 'ETS_To_Tpc@13685'}
            , {'project': 'TPC', 'database_code': 'tpc_gauss_his_press', 'module': 'ET的O库迁移到高斯',
               'usage': '压测只读',
               'database_type': 'openGauss', 'database_name': 'et_to_tpc_his_press_db', 'ip_address': '7.203.228.46',
               'port': '8000', 'schema': 'fin_tr_plan_his', 'username': 'fin_tr_plan_his',
               'password': 'ETS_To_Tpc@13685'}
            , {'project': 'Jalor', 'database_code': 'jalor_sit', 'module': '公服', 'usage': 'SIT',
               'database_type': 'MySQL',
               'database_name': 'jalorcs_authority', 'ip_address': '7.199.150.7', 'port': '3306', 'schema': '不涉及',
               'username': 'unsan_cs_readonly_new', 'password': 'Db@2023!'}
            , {'project': 'Jalor', 'database_code': 'jalor_uat', 'module': '公服', 'usage': 'UAT',
               'database_type': 'MySQL',
               'database_name': 'jalorcs_authority_uat', 'ip_address': '7.199.170.72', 'port': '3306',
               'schema': '不涉及',
               'username': 'unsan_cs_readonly', 'password': 'Db@2023!'}
        ]

        for m in db_info:
            database_info = DatabaseInfo(
                project=m['project'], database_code=m['database_code'], module=m['module'], usage=m['usage'],
                database_type=m['database_type'], database_name=m['database_name'], ip_address=m['ip_address'],
                port=m['port'], schema=m['schema'], username=m['username'], password=m['password']
            )
            db.session.add(database_info)

        database_permission = [
            {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_common_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_mon_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_cover_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_uat__etl_cashplan_op'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_uat__plan_uat_reader'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_uat__ins_uat_reader'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_common_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_mon_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_uat__eod_reader'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_cover_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_common_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_mon_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_cover_icsl'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_press'}
            # , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_press'}
            # , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_common_press'}
            # , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_mon_press'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_press'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_cover_press'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_plan_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_ins_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_common_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_mon_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_eod_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_cover_prac2'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_his_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_his_uat'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_his_uat_admin'}
            , {'ip_address': '10.234.66.158', 'database_code': 'tpc_gauss_his_press'}
            , {'ip_address': '10.234.66.158', 'database_code': 'jalor_sit'}
            , {'ip_address': '10.234.66.158', 'database_code': 'jalor_uat'}
        ]

        for m in database_permission:
            database_permission_tmp = DatabasePermission(ip_address=m['ip_address'], database_code=m['database_code'])
            db.session.add(database_permission_tmp)

        db.session.commit()
        click.echo('Done.')
